package com.yhn.bubblevideo.user.service;


import com.yhn.bubblevideo.model.domain.User;
import com.yhn.bubblevideo.model.dto.req.user.UserLoginRequestDTO;
import com.yhn.bubblevideo.model.dto.req.user.UserRegisterRequestDTO;
import com.yhn.bubblevideo.model.dto.resp.UserLoginRespDTO;
import com.yhn.bubblevideo.model.dto.resp.UserRespDTO;

/**
 * @author yhn
 * @version 1.0
 * @description
 * @date 2024/9/21 9:34
 */
public interface UserService {
    /**
     * 用户注册
     *
     * @param requestParam 用户注册请求
     */
    void userRegister(UserRegisterRequestDTO requestParam);

    /**
     * 用户登录
     *
     * @param requestParam 用户登录请求
     * @return 脱敏后的用户信息
     */
    UserLoginRespDTO userLogin(UserLoginRequestDTO requestParam);


    /**
     * 获取当前登录用户
     *
     * @return 当前登录对象信息
     */
    UserLoginRespDTO getLoginUser();

    /**
     * 用户注销
     *
     * @return 是否注销成功
     */
    boolean userLogout();

    /**
     * 获取脱敏的已登录用户信息
     */
    UserLoginRespDTO getLoginUserVO(User user);

    /**
     * 用户登录短信发送
     */
    void sendMessage(String mobile);


    /**
     * 根据ID获取信息
     *
     * @param id ID信息
     * @return 实体信息
     */
    UserRespDTO getInfoById(Long id);

    /**
     * 将对象转化为脱敏对象
     *
     * @param user 原对象
     * @return 脱敏对象
     */
    UserRespDTO getUserVO(User user);

}
